//Axios实例配置（拦截器是核心）
import axios from "axios";
import type { AxiosInstance } from "axios";
import {BASE_URL,TIME_OUT} from "@/service/config"
import {ElMessage} from "element-plus";
//创建axios对象,把基础配置传入进去,作用是能调用get post put请求
const instance:AxiosInstance=axios.create({
  baseURL:BASE_URL,
  timeout:TIME_OUT
})

// 请求拦截器：添加Token
//请求拦截器（访问后台前线罩盖拦截器：表示后台向英国看来的数据先走该拦截器）和响应拦截器
//promise异步调用
instance.interceptors.request.use((config)=>{
  let token=sessionStorage.getItem("token");
  if (token&&config.headers){
    config.headers.Authorization=`Auth ${token}`
  }
  return config;
},(error)=>{
  ElMessage.error('请求配置错误'+(error.message||"位置错误"))
  //表示返回给调用者错误的消息
  return Promise.reject(error)
})

// 响应拦截器：处理后端返回结果
instance.interceptors.response.use((response)=>{
  let res=response.data;//包括后台返回的code、msg和data
  if (res?.code!==200){
    return Promise.reject(new Error("响应异常"+res.msg))
  }else {//成功
    return res;// 只返回后端数据部分
  }

},(error)=>{//后台抛出异常在此处接受
  // ElMessage.error('请求配置错误'+(error.message||"位置错误"))
  return Promise.reject(error)
})
export default instance;
